package com.microservice.api.user;

import com.microservice.api.auth.dto.LoginResponse;
import com.microservice.api.common.Result;
import com.microservice.api.user.dto.UserInfoDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;
import java.util.Set;

/**
 * 用户服务Feign客户端
 */
@FeignClient(name = "user-service", path = "/user")
public interface UserServiceClient {
    
    /**
     * 根据用户名获取用户信息（供Auth服务调用）
     */
    @GetMapping("/internal/username/{username}")
    Result<UserInfoDTO> getUserByUsername(@PathVariable("username") String username);
    
    /**
     * 获取用户菜单树（供Auth服务登录时调用）
     */
    @GetMapping("/internal/menus/{userId}")
    Result<List<LoginResponse.MenuVO>> getUserMenus(@PathVariable("userId") Long userId);
    
    /**
     * 获取用户角色列表（供Auth服务登录时调用）
     */
    @GetMapping("/internal/roles/{userId}")
    Result<Set<String>> getUserRoles(@PathVariable("userId") Long userId);
    
    /**
     * 获取用户权限列表（供Auth服务登录时调用）
     */
    @GetMapping("/internal/permissions/{userId}")
    Result<Set<String>> getUserPermissions(@PathVariable("userId") Long userId);
}
